//package com.sunlands.zlcx.usercenter.util;
//
//import org.apache.commons.lang3.StringUtils;
//import org.slf4j.MDC;
//
//import java.security.SecureRandom;
//
///**
// * @author gaoyanfeng
// * @create 2018-04-09 12:03
// **/
//public class TraceUtils {
//    private static SecureRandom random = new SecureRandom();
//    public static final String TRACE_ID_KEY = "traceId";
//    private static final String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
//
//    public TraceUtils() {
//    }
//
//    public static void beginTrace(String serverName, int commond) {
//        String traceId = encodeBase62(random.nextLong());
//        MDC.put("traceId", serverName + "-" + commond + "-" + traceId);
//    }
//
//    public static void beginTrace(String serverName, int commond, String traceId) {
//        if (StringUtils.isNotBlank(traceId)) {
//            MDC.put("traceId", serverName + "-" + commond + "-" + traceId);
//        } else {
//            beginTrace(serverName, commond);
//        }
//
//    }
//
//    public static void beginTrace(Object bussinessInfo) {
//        String traceId = encodeBase62(random.nextLong());
//        MDC.put("traceId", bussinessInfo.toString() + "-" + traceId);
//    }
//
//    public static void beginTrace() {
//        long epoch = System.currentTimeMillis() / 1000L;
//        String traceId = encodeBase62(random.nextLong());
//        MDC.put("traceId", epoch + traceId);
//    }
//
//    public static void beginTrace(String traceId) {
//        MDC.put("traceId", traceId);
//    }
//
//    public static String getTrace() {
//        Object obj = MDC.get("traceId");
//        return obj != null ? obj.toString() : "";
//    }
//
//    public static void endTrace() {
//        MDC.remove("traceId");
//    }
//
//    private static String encodeBase62(long num) {
//        return alphabetEncode(num, 62);
//    }
//
//    private static String alphabetEncode(long num, int base) {
//        num = Math.abs(num);
//
//        StringBuilder sb;
//        for(sb = new StringBuilder(); num > 0L; num /= (long)base) {
//            sb.append("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt((int)(num % (long)base)));
//        }
//
//        return sb.toString();
//    }
//
//}
